import logging
import os
from datetime import datetime
from config.constants import LOGS_PATH
import logging.handlers


# 配置根日志器以捕获所有日志
def setup_logger():
    """配置日志系统并返回日志器"""
    # 创建日志目录（如果不存在）
    os.makedirs(LOGS_PATH, exist_ok=True)

    # 生成带时间戳的日志文件名
    timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
    log_file = os.path.join(LOGS_PATH, f"system_{timestamp}.log")

    # 获取根日志器（捕获所有日志）
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)  # 设置全局最低级别为DEBUG

    # 清除所有现有处理器（避免重复添加）
    for handler in logger.handlers[:]:
        logger.removeHandler(handler)

    # 1. 文件处理器（记录所有DEBUG及以上级别的日志）
    file_handler = logging.FileHandler(log_file, encoding='utf-8')
    file_handler.setLevel(logging.DEBUG)  # 文件记录所有级别

    # 2. 控制台处理器（可根据需要设置不同级别）
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.INFO)  # 控制台只显示INFO及以上

    # 详细的日志格式
    formatter = logging.Formatter(
        '%(asctime)s -> %(name)s -> %(levelname)s ->%(filename)s--%(module)s:%(lineno)d -> %(message)s'
    )

    # 应用格式到处理器
    file_handler.setFormatter(formatter)
    console_handler.setFormatter(formatter)

    # 添加处理器
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)

    # 配置常见第三方库的日志级别
    logging.getLogger('urllib3').setLevel(logging.WARNING)
    logging.getLogger('requests').setLevel(logging.WARNING)

    return logger, log_file


# 便捷日志方法
def log_message(message, level=logging.INFO):
    """记录日志的便捷方法"""
    logging.log(level, message)


# # 初始化日志系统
# setup_logger()